Subject: WaveFilter Net+ Nulls
From: Mike Reed <[email-masked]>
To: [email-masked]
Date: Mon, 25 Mar 1996 16:35:13 -0800

Here is a bandwidth killer...  :)

My most common call these days is "Tell me more about using nulls with
WaveFilter", so I thought I would publicly display the complete answer.  This
file is included with WaveFilter 1.1 to help users decide if an upgrade is a
valuable move.  These nulls are NOT available in original WaveFilter or
WaveFilter 1.1, only WaveFilter Net+.

***************** WAVEFILTER NET+ NULLS  ****************

Use this file to help determine if WaveFilter Net+ would be a worthy upgrade.
While WaveFilter Net+  adds several additional enhancements, the ability to vary
settings over time adds a great number of useful options.  Properly named and
positioned null objects can control nearly every WaveFilter effect.  Several
effects are only accessible via the use of nulls.

The tables and text based graphics in this file are best viewed using a
mono-spaced font like courier.  Special thanks go to Arnie Cachelin from NewTek
for the idea of using nulls to add envelopes to plug-in parameters and Gary
Baker of Jim Brown and Associates for the idea of using a focal point null to
control depth-of-field.

***************** NULLS QUICK REFERENCE *****************

Color Filter Nulls
*******************************
RGB%		Three-Channel + Two Rotation Switches
BGC%		Three-Channel

Blur Nulls
*******************************
FocalPoint 
FocalRange
DOFBlur%	Single-Channel
DOFBlur%Max	Single-Channel
DOFSeperator	Single-Channel
Blur%		Single-Channel
Softer		Three-Position Switch

Antialias Nulls
*******************************
Antialias%	Single-Channel
AntialiasT	Single-Channel

Noise Nulls
*******************************
Noise%		Single-Channel
NoiseWeight	Three-Channel
ChromaNoise	Two-Position Switch

Posterize Null
*******************************
Posterize%	Single-Channel

Two-Position Switches
*******************************
NTSCLimit	Two-Position Switch
BlackandWhite	Two-Position Switch
Negative	Two-Position Switch
FlipFrame	Two-Position Switch

Five-Position Switches
*******************************
FiltersShouldAffect	Five-Position Switch

***************** RULES FOR USING NULLS *****************

All null names in this document are generic null names.  To use a null in a
scene, the name of the null must be EXACTLY AS LISTED and the names are CASE
SENSITIVE.  To comply with standard LightWave 3D object naming conventions, you
must append a ".lwo" to the name of any null used.  Because four different
WaveFilters can be active in a single scene, you must prefix all null names with
the number of the WaveFilter you wish it to control.

An example might be the RGB% null used to control WaveFilter 1.  The correct
name for the null in the scene is "1RGB%.lwo".  You might want to use one set of
nulls working with WaveFilter 1 to affect the background and another set of
nulls working with WaveFilter 2 to effect objects only.

Nulls that only use the Z axis value can be moved anywhere on the X or Y axis
without affecting the returned value of the null.  This can be used to position
each null at a different X axis.  Then using the Top view in Layout and a 10x10
grid at a grid size of 20 you can control the nulls in a fashion similar to a
mixing board.  As you move the null up the screen, (Greater Z values) you get
more of the selected effect.

Use "Load Objects from Scene" in the "Objects" panel to add a full set of
control nulls and add WaveFilter to the scene.  (Do not add the lights)  The
scenes for each null are named exactly like the plug-in but with a .lws
extension (i.e. WavFltr1.lws). Using these nulls means that you can move a null,
key frame it, and render (F9) without opening or closing any control panels...
with full control over most effects.

To understand the nulls better, load the "WavFltr1.lws" and examine the position
of each null.  The idea was to create a kind of image processing mixing board
right in Layout.  The position of each null is such that it will not cause any
effect on the scene.  Moving nulls is how you create new effects.  Moving a null
on a control axis is the same as entering the value on the WaveFilter options
panel.

There are basically four types of nulls, or control knobs, used.  The first type
is the 3-Channel control. These nulls manipulate effects that require three
numbers for control. Each axis will control a different feature of an effect.
Currently,  "RGB%", "BGC%" and "NoiseWeight" are 3-Channel.  Most commonly,
nulls are single channel and only use the z axis information.  An example of
this is in the "WavFltr1.lws" scene. Offsetting each single-channel null to a
different X position separates each null for easier control. Also each group of
nulls is color coded to help you visually keep the nulls identified.

The final type of null is the switch.  Use these nulls to select among two or
more options.  Select between the options by moving the respective null to 1, 2,
3, 4 or 5 meters on the Z axis.  The number of options for each null will
determine the number of possible positions for the null.  Most switched nulls
are simply on or off and sit at zero to turn the effect off and at 1 meter to
turn the effect on.  The RGB% null has a slight variation of the switch called a
Rotation Switch.  Rotation, on the controlling axis, is the switch. Zero
rotation is off and a rotation of one degree represents on.

 ***************** NULLS DETAILS*****************

Color Filter Nulls
*******************************
RGB%		Three-Channel + Two Rotation Switches
BGC%		Three-Channel

Control the color filters by using two nulls named "RGB%" and "BGC%".  The nulls
control the effects as listed in the table below.  Both nulls use a position of
100,100,100 for no effect.  

	RGB%		BGC%
-----+-----------+--------
X	Red%		Bright%
-----+-----------+--------
Y	Green%	Gamma%
-----+-----------+--------
Z	Blue%		Contast%
-----+-----------+--------

Normally, the RGB% effects are done by multiplying the color value of each pixel
by the percentage requested.  This has the effect of controlling color without
disturbing shadows.  Using nulls, you can access two other types of color
control.  Rotate the RGB% null on the X axis to any value other than zero to
switch from using multiplication to using addition for color correction.  This
has the effect of affecting each pixel equally, even the shadows. Rotate on the
Y axis to any value other than zero to switch to color replacement mode.  This
mode replaces all selected parts of the image with the selected color.

**Common Uses
Composite color correction: Use multiple WaveFilters, one to affect objects
only, one set for background only and another set for full frame, to master
compositing.  Also, ambient radiosity, such as the green found in a dense jungle
scene, can be added without blowing out shadows as it would using ambient light
alone.
Fade To Black: Moving the "BGC%" null from 100 to 0 on the X axis over 30 frames
results in a 30 frame fade to black.  Do the opposite to fade from black. This
also works with "RGB%".
Color Effects: Moving the "RGB%" null wildly can give some interesting "Chroma
Effects" looks.
Green Screen Clean-up: Select the color range that defines the portion of the
image to remove.  Then Rotate the RGB% null on the Y axis to a value other than
zero to activate color replacement mode and set the RGB% null to the correct XYZ
position to represent your green screen color.

Blur Nulls
*******************************
FocalPoint 
FocalRange
DOFBlur%	Single-Channel
DOFBlur%Max	Single-Channel
DOFSeperator	Single-Channel
Blur%		Single-Channel
Softer		Three-Position Switch

DOF Blur uses four nulls for complete control of the effect.  The first two
nulls are called "FocalPoint" and "FocalRange".  "Focal Point" marks the
distance from the camera which will be the center of the area which will be in
perfect focus.  "FocalRange" marks the distance from the "FocalPoint" which will
be the edge of the area which will be in perfect focus.  "FocalRange" must be
parented to "FocalPoint".

This information is used to find the near and far edges of perfect focus.  From
the far edge, going towards infinity, blur is added at the rate specified either
on the options panel using "DOF Blur %" or by using the Z axis value of a
"DOFBlur%" null in the scene.  An object one meter past the far edge will be
blurred the percent selected, at two meters twice that much blur and so on...  

The same idea holds true as you move closer to the camera from the near edge.
As you move away from the near edge and toward the camera, the amount of blur
increases per meter as specified.

The amount of blur per meter will increase, both near and far, as specified,
until it reaches the level specified using the Z axis value of the "DOFBlur%Max"
null.  Because greater amounts of blur take greater amounts of time to render,
this null can be very useful for controlling render times.  If a "DOFBlur%Max"
null is not found in the scene, then a value of 140% is used.

			DOFBlur% per meter
                         ^
                         |
                         |
                     ....FR....(Far)                        
                 ....          ....
\            ....                  ....            /
  \      ....                          ....      / 
    \....                FP                ..../
 .... \                                      / ....
.       \                                  /       ....
          \          ..........(Near)    /
            \    ....    |     ....    /
             .\..        |         ../.
         ....   \        v         /   ....
     ....         \   DOFBlur%   /         ....
                    \          /
                      \      /
                       Camera

The "Softer" null selects which of the three types of DOF blur are used.  If the
Z axis value of this null equals zero then the very fast "Linear Blur" is
applied.  If the Z axis value equals one then the softer "Collective Blur" is
applied.  If the Z axis value equals two then the very smooth but slower
"Distributive Blur" is applied.

To understand the "DOFSeperator" null, you need to imagine each pixel in you
image exploding one at a time.  As they explode they each send their color up
the height of "DOFSeperator" and then come back down.  If the "DOFSeperator"
null value is too small, then the edge of curved objects won't have enough power
to blur onto the neared middle of the curve.  If set to high, then background
objects may blur over the top of foreground objects.  Load the "Chess.lws" to
see the nulls in action.  Try moving each null to see the affect of each on the
scene.  Experimenting is the best way to learn.

With DOF, often less is more.  A strong blur distracts the eye while a gentle
blur is soft to the eye and allows the eye to find the focal point gently.
Using low levels of blur also helps control rendering times.

**Common Uses
Rack Focus: Simply move the "FocalPoint" null from one object to another over
the number of frames you wish for the effect.  This effect works best when
object two is originally visibly blurry. Use the "Focal Point" to direct the
viewers eye where you wish it to go.  
Volumetric Fog or Dust: Blur single point polygons created in your favorite
partical animation system.
Foreground Attention: Blur the background about 40 percent to really bring out
the forground objects.

Antialias Nulls
*******************************
Antialias%	Single-Channel
AntialiasT	Single-Channel

Antialaising can be controlled using two nulls named "Antialias%" and
"AntialiasT".  The z axis value of each null is used to override the values
entered on the WaveFilter options panel.

**Common Uses
Speed Rendering: Raise your LightWave antialias threshold to the highest number
that gives a good medium antialias render.  Then set LightWave antialias to low
and move the "Antialias%" and "AntialiasT" nulls to 100 on the z axis.  The
results should be similar to the original medium quality but much faster.
Improve old renderings: WaveFilter antialias can be applied to previously
rendered frames by running the image sequence as the background image and adding
WaveFilter antialias.

Noise Nulls
*******************************
Noise%		Single-Channel
NoiseWeight	Three-Channel
ChromaNoise	Two-Position Switch

Noise can be controlled using three nulls named " Noise% ", " NoiseWeight" and
ChromaNoise.  The z axis value the Noise% null is used to override the value
entered on the WaveFilter options panel.  The NoiseWeight null controls how
strong the interference is.  The ChromaNoise null switches the noise from
luminance noise, the default, when the null is at zero in the Z axis to Chroma
noise when the null is at one in the Z axis.

**Common Uses
Grain: Set the levels to generate the look of many types of gain found in film
or video.
TV Interference: Animating the effect can generate an excellent TV interference
look.

Posterize Null
*******************************
Posterize%	Single-Channel

The posterize effect can be controlled using a null named "Posterize%".  The z
axis value of the null is used to override the value entered on the WaveFilter
options panel.

**Common Uses
Posterize Fade: Raise the Poterize% value to about 500 then switch background
images and bring the setting back to zero.

Two-Position Switches
*******************************
NTSCLimit	Two-Position Switch
BlackandWhite	Two-Position Switch
Negative	Two-Position Switch
FlipFrame	Two-Position Switch

Control each effect by using a null as listed above.  Use the z axis value of
the null to switch each effect on and off.

 Five-Position Switches
*******************************
FiltersShouldAffect	Five-Position Switch

Z position
----------
0 = Full Frame
1 = Objects only
2 = Background Only
3 = Shadows Only
4 = Color Range Only

Position this null to control which portion of the image are affected by the
filter.  This null is rarely animated, but is available to avoid needing to open
the control panel to change this setting.

*******************************

-Mike Reed 8-{D}
Unlimited Potential, Inc.
(913) 685-2700